package com.yhp.service.impl;

import com.yhp.bean.Express;
import com.yhp.dao.impl.ExpressDaoMysql;
import com.yhp.util.RandomUtil;


import java.util.List;
import java.util.Map;

public class ExpressService {
    static ExpressDaoMysql dao = new ExpressDaoMysql();

    /**
     * 用于查询数据库中的全部快递(总数+新增)，待取件快递(总数+新增)
     *
     * @return {{size:总数,day:新增},{size:总数,day:新增}}
     */

    public static List<Map<String, Integer>> console() {
        return dao.console();
    }

    /**
     * 用于查询所有快递
     *
     * @param limit      是否分页  true表示分页  false表示查询全部
     * @param offset     SQL语句的起始索引
     * @param pageNumber 页查询的数量
     * @return 快递的集合
     */

    public static List<Express> findAll(boolean limit, int offset, int pageNumber) {
        return dao.findAll(limit,offset,pageNumber);
    }

    /**
     * 根据快递单号查询快递信息
     *
     * @param number 单号
     * @return 查询的快递信息     单号不存在时返回null
     */

    public static Express findByNumber(String number) {
        return dao.findByNumber(number);
    }

    /**
     * 根据取件码查询快递信息
     *
     * @param code 取件码
     * @return 查询的快递信息     取货吗不存在时返回null
     */

    public static Express findByCode(String code) {
        return dao.findByCode(code);
    }

    /**
     * 根据手机号查询查询快递信息
     *
     * @param phone 手机号
     * @return 查询的快递信息
     */

    public static List<Express> findByPhone(String phone) {
        return dao.findByPhone(phone);
    }

    /**
     * 根据手机号查询查询快递信息
     * @param  phone 手机号
     * @param  status 状态码
     * @return    查询的快递信息
     */
    public static List<Express> findByPhoneAndStatus(String phone,int status){
        return dao.findByPhoneAndStatus(phone,status);
    }


    /**
     * 根据录入人手机号查询查询快递信息
     *
     * @param sysPhone 手机号
     * @return 查询的快递信息
     */

    public static List<Express> findBySysPhone(String sysPhone) {
        return dao.findBySysPhone(sysPhone);
    }

    /***
     * 快递的录入
     * @param e  录入的对象
     * @return 返回  录入成功或者失败
     */

    public static boolean insert(Express e) {
        while (true) {
            int num = RandomUtil.getCode();
            String code = String.valueOf(num);
            boolean b = dao.lookCode(code);
            if(b){
                e.setCode(code);
                return dao.insert(e);
            }
        }

    }

    /**
     * 快递的修改
     *
     * @param id   要修改的快递的id
     * @param newe 新的快递对象  修改的数据
     * @return 返回成功或者失败
     */

    public static boolean update(int id, Express newe) {
        return dao.update(id,newe);
    }

    /***
     * 更改快递的状态为1  表示取件完成
     * @param code  要更改快递的id
     * @return 就改的结果  成功或者失败
     */

    public static boolean updateStatus(String code) {
        return dao.updateStatus(code);
    }

    /***
     * 删除快递
     * @param id  要删除快递的id
     * @return 返回成功或者失败
     */

    public static boolean delete(int id) {
        boolean delete = dao.delete(id);
        return delete;
    }



}
